package com.cn.wanxi.servlet;

import com.cn.wanxi.dto.ResultModel;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.impl.UserService;
import net.sf.json.JSONArray;
import redis.clients.jedis.Jedis;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 1.dao java后台数据层
 *      dao  定义接口
 *      impl 实现数据接口层 1.连接数据库  2.执行代码
 * 2.dto页面数据层  里面的值和页面的对象进行一一对应   面向对象（页面）
 *      比如home主页是一个对象，包括四个对象，
 *      1.公司信息，2导航信息，   这两个是公共的部分，所以要讲这两个封装到一起CommonModelDto
 *      3.新闻信息，4，产品信息    因为这两个是在主页:HomeModelDto  这里面就应该包含新闻和产品
 * 3.model  实体层  和数据库的字段一一对应。 面向对象（数据库）
 *        对于主页:我们应该有四个表:公司表company,导航表nav,新闻表news,产品表product
 *        对于新闻页面:公司表company,导航表nav,新闻表news
 *        导航表nav字段大概有: id,href,title,status,imgHref,parentId状态status,表示1启用或者0停用
 *  4.service 服务逻辑层  主要处理逻辑关系,所有的逻辑关系都应该放在service层
 *         1，登录成功与失败
 *         2，插入信息成功与失败
 *         3，redis缓存
 * 5.servlet 页面控制层 controller
 *          1.得到页面数据
 *          2.封装页面 dto
 *          3.调用服务逻辑层
 *          4.返回页面或者返回json数据
 *
 * 6.页面传递过来的值如果能够在前端进行处理，就在前端进行处理，
 *      前端处理前端的逻辑 现在计算机功能或者性能比较强大，直接在客户端进行处理
 *      后端处理后端的逻辑 service 后台放在服务器，如果都在服务器处理，必然加大服务器压力，导致服务器崩溃
 *      如：我们将前端的逻辑放在后端服务器，如果同时（上百万）或更多的人进行访问，那么服务器就是一直在运算
 *      能够在前端处理的坚决不能放在后端
 * 7.返回数据格式规范(定义标准）
 *      返回结果对象ResultModel
 *      里面有：
 *      1，code 编码格式（200成功，400失败，500超时）
 *      2，result  结果描述 （成功，失败）
 *      3.List<T>  结果集
 * 8.什么时候会进行代码优化，或者代码重构？
 *      1.一段代码出现多次
 *      2.需要抽象类
 *      3.接口和抽象类
 *      4.设计模式  六大原则23中常见的设计模式
 *       开闭原则
 *       单一职责   一个类，或者一个方法只做一件事情
 *       迪米特法则 知道最少原则
 *       里式替换
 *       依赖倒置
 *       接口隔离原则
 *
 *       单例
 *       工厂
 *       代理
 *       桥接
 *       观察者
 *       装饰器
 *       中介者
 *  只有你们的代码写得足够多，才会想到设计模式
 *  设计模式 架构师，高级工程师  考虑的  技术方向发展
 *  UML   用例图，类图，时序图
 *  不能因为设计模式而设计模式，不伦不类
 *
 *  前端需要的技术：js重点，（jquery）
 *      扩展：easyUI界面，bootstrap样式，VUE.js
 */
@WebServlet("/login")
public class Login extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        resp.setHeader("Access-Control-Allow-Origin", "*");//解决跨域问题
//        1.拿到页面传递过来的值
        String username = req.getParameter("username");
        String password = req.getParameter("password");
//        2.封装model
        UserModel userModelPage=new UserModel();
        userModelPage.setUsername(username);
        userModelPage.setPassword(password);
//        3.调用service
        UserService userService=new UserService();
        ResultModel re=userService.findByUserName(userModelPage);

//        4.返回页面（返回值）
        JSONArray jsonArray = JSONArray.fromObject(re);
        resp.getWriter().println(jsonArray);

    }
}
